package game.tileMap
{
	import game.tileMap.model.vo.MapData;

	public class MapFactory
	{
		private static var _instance:MapFactory
		public function MapFactory()
		{
		}
		
		public static function getInstance():MapFactory{
			if (!_instance) {
				
				_instance=new MapFactory();
				
			}
			return _instance;
		}
		
		public function getMapDataByXml(xml:XML):MapData{
			var map:MapData=new MapData();
			var data:String=xml.data;
			var arr:Array=data.split(';');
			map.height=arr.length;
			map.width=arr[0].length
			var arr2D:Array=[];
			for (var i:int;i<arr.length;i++){
				
				var tempArr:Array=arr[i].split(',');
				for (var j : int = 0;j < tempArr.length; j++) {
					
					tempArr[j]=int(tempArr[j])
				}
				arr2D.push(tempArr);
			}
			
			
			map.data=arr2D;
			map.data=changeArrXY(map.data);
			
			return map;
		}
		
		public function getMapData(id:int):MapData{
			var map:MapData=new MapData();
			map.data=[[1,1,1,2,1,1,1,1,1,1,1,1,1,1],
					[1,1,1,1,1,2,1,1,1,4,1,1,1,1],
					[1,1,1,4,1,1,1,3,1,1,1,1,1,1],
					[1,1,1,1,1,1,1,1,1,1,1,1,1,1],
					[1,1,1,1,1,2,1,1,1,1,1,1,1,1],
					[1,1,1,4,1,1,1,1,1,1,1,1,1,1],
					[1,1,1,1,1,1,1,1,1,1,1,1,1,1],
					[1,1,1,1,1,1,1,1,1,1,1,1,1,1],
					[1,1,1,1,1,1,1,1,1,1,1,1,1,1],
					[1,1,1,2,1,3,1,1,1,1,1,1,1,1],
					[1,1,1,1,1,1,1,1,1,1,1,1,1,1],
				
					]
				
			for (var i:int;i<500;i++){
				map.data.push([1,1,1,4,1,1,1,3,1,1,1,1,1,1]);
				map.data.push([1,1,1,1,1,1,1,2,1,1,1,1,1,1]);
			}
				map.data=changeArrXY(map.data);
				map.width=map.data.length;
				map.height=map.data[0].length;
			return map;
		}
		
		
		private function changeArrXY(arr:Array):Array{
			var numRows:int= arr.length;
			var numCols:int =arr[0].length;
			var arr2d:Array=[];
			for (var i:uint = 0; i <numCols; i++ ) {
				arr2d[i]=[]
				for (var j : int = 0;j < numRows; j++) {
					
					arr2d[i][j]=arr[j][i]
				}
			}
			return arr2d;
		}
	}
}